#pragma once
#include "DataStructure/Common/Id.h"
#include "DataStructure/Common/Real.h"

SG_DATASTRUCTURE_POST_NAMESPACE_OPEN

struct BEAMStrainData
{
    SG::DataStructure::Common::Id   m_eId      = 0;      /// Element identification number
    SG::DataStructure::Common::Id   m_GRID[11] = { 0 };  /// External Grid Point ID
    SG::DataStructure::Common::Real m_SD[11]   = { 0 };  /// Station distance divided by length
    SG::DataStructure::Common::Real m_XC[11]   = { 0 };  /// Longitudonal Stress or Strain at Point C
    SG::DataStructure::Common::Real m_XD[11]   = { 0 };  /// Longitudonal Stress or Strain at Point D
    SG::DataStructure::Common::Real m_XE[11]   = { 0 };  /// Longitudonal Stress or Strain at Point E
    SG::DataStructure::Common::Real m_XF[11]   = { 0 };  /// Longitudonal Stress or Strain at Point F
    SG::DataStructure::Common::Real m_MAX[11]  = { 0 };  /// Maximal Stress or Strain
    SG::DataStructure::Common::Real m_MIN[11]  = { 0 };  /// Minimal Stress or Strain
    SG::DataStructure::Common::Real m_MST[11]  = { 0 };  /// Margin of Safety in Tension
    SG::DataStructure::Common::Real m_MSC[11]  = { 0 };  /// Margin of Safety in Compression
    SG::DataStructure::Common::Id   m_domainId = 0;      /// Domain identifier
};

///< @brief 判断数据是否相等
DECLSPEC bool operator== (const BEAMStrainData& val1, const BEAMStrainData& val2);

///< @brief 排序使用
DECLSPEC bool operator< (const BEAMStrainData& a, const BEAMStrainData& b);

SG_DATASTRUCTURE_POST_NAMESPACE_CLOSE
